Skip to content

Instantly share code, notes, and snippets.

@salathe
Created January 24, 2012 20:55
Show Gist options
  • Save salathe/1672543 to your computer and use it in GitHub Desktop.
Save salathe/1672543 to your computer and use it in GitHub Desktop.
PHP array/string functions haystack/needle ordering
Array functions:
array_search $needle, $haystack
in_array $needle, $haystack
String functions:
strchr $haystack, $needle
stripos $haystack, $needle
stristr $haystack, $needle
strpos $haystack, $needle
strrchr $haystack, $needle
strripos $haystack, $needle
strrpos $haystack, $needle
strstr $haystack, $needle
substr_count $haystack, $needle
<?php
// "Function" lists taken from scraping http://php.net/ref.<array|strings>
$func_lists = array(
"Array" => array("array_change_key_case","array_chunk","array_combine","array_count_values","array_diff_assoc","array_diff_key","array_diff_uassoc","array_diff_ukey","array_diff","array_fill_keys","array_fill","array_filter","array_flip","array_intersect_assoc","array_intersect_key","array_intersect_uassoc","array_intersect_ukey","array_intersect","array_key_exists","array_keys","array_map","array_merge_recursive","array_merge","array_multisort","array_pad","array_pop","array_product","array_push","array_rand","array_reduce","array_replace_recursive","array_replace","array_reverse","array_search","array_shift","array_slice","array_splice","array_sum","array_udiff_assoc","array_udiff_uassoc","array_udiff","array_uintersect_assoc","array_uintersect_uassoc","array_uintersect","array_unique","array_unshift","array_values","array_walk_recursive","array_walk","array","arsort","asort","compact","count","current","each","end","extract","in_array","key","krsort","ksort","list","natcasesort","natsort","next","pos","prev","range","reset","rsort","shuffle","sizeof","sort","uasort","uksort","usort"),
"String" => array("addcslashes","addslashes","bin2hex","chop","chr","chunk_split","convert_cyr_string","convert_uudecode","convert_uuencode","count_chars","crc32","crypt","echo","explode","fprintf","get_html_translation_table","hebrev","hebrevc","hex2bin","html_entity_decode","htmlentities","htmlspecialchars_decode","htmlspecialchars","implode","join","lcfirst","levenshtein","localeconv","ltrim","md5_file","md5","metaphone","money_format","nl_langinfo","nl2br","number_format","ord","parse_str","print","printf","quoted_printable_decode","quoted_printable_encode","quotemeta","rtrim","setlocale","sha1_file","sha1","similar_text","soundex","sprintf","sscanf","str_getcsv","str_ireplace","str_pad","str_repeat","str_replace","str_rot13","str_shuffle","str_split","str_word_count","strcasecmp","strchr","strcmp","strcoll","strcspn","strip_tags","stripcslashes","stripos","stripslashes","stristr","strlen","strnatcasecmp","strnatcmp","strncasecmp","strncmp","strpbrk","strpos","strrchr","strrev","strripos","strrpos","strspn","strstr","strtok","strtolower","strtoupper","strtr","substr_compare","substr_count","substr_replace","substr","trim","ucfirst","ucwords","vfprintf","vprintf","vsprintf","wordwrap"),
);
foreach ($func_lists as $type => $funcs) {
echo "$type functions:\n";
foreach ($funcs as $func) {
try {
$needle = new ReflectionParameter($func, "needle");
$haystack = new ReflectionParameter($func, "haystack");
$order = ($needle->getPosition() < $haystack->getPosition() ? '$needle, $haystack' : '$haystack, $needle');
printf("%20s %s\n", $func, $order);
} catch (ReflectionException $e) {
continue;
}
}
echo "\n";
}
@Potherca
Copy link

Potherca commented Jul 1, 2021

I took a slightly different approach, basically grepping the manual:

wget https://www.php.net/distributions/manual/php_manual_en.tar.gz
tar -vxzf php_manual_en.tar.gz
for sFile in $(grep -lR '$search\|$needle' ./php-chunked-xhtml/ | grep 'function\.' | sort);do
    grep -R "<span class=\"methodname\"><strong>$(echo "${sFile}" | cut -d'.' -f3 | tr '-' '_')" "${sFile}" \
        | sed -e 's/<[^>]*>//g' \
        | sed -e 's/&nbsp;//g'
done

This gives the contemporary result:

Array functions:

    array_key_exists $needle, $haystack
          array_keys $haystack
          array_keys $haystack, $needle
        array_search $needle, $haystack
            in_array $needle, $haystack

String functions:

          mb_stripos $haystack, $needle
          mb_stristr $haystack, $needle
           mb_strpos $haystack, $needle
          mb_strrchr $haystack, $needle
         mb_strrichr $haystack, $needle
         mb_strripos $haystack, $needle
          mb_strrpos $haystack, $needle
           mb_strstr $haystack, $needle
     mb_substr_count $haystack, $needle
        str_contains $haystack, $needle
       str_ends_with $haystack, $needle
             stripos $haystack, $needle
        str_ireplace $needle, $haystack
             stristr $haystack, $needle
              strpos $haystack, $needle
             strrchr $haystack, $needle
         str_replace $needle, $haystack
            strripos $haystack, $needle
             strrpos $haystack, $needle
     str_starts_with $haystack, $needle
              strstr $haystack, $needle
      substr_compare $haystack, $needle
        substr_count $haystack, $needle

Other functions:

        filter_input $haystack, $needle
    grapheme_stripos $haystack, $needle
    grapheme_stristr $haystack, $needle
     grapheme_strpos $haystack, $needle
   grapheme_strripos $haystack, $needle
    grapheme_strrpos $haystack, $needle
     grapheme_strstr $haystack, $needle
        iconv_strpos $haystack, $needle
       iconv_strrpos $haystack, $needle
            yaz_hits $haystack, $needle
           imap_sort $haystack, $needle

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment