我尝试使用PHP的str_replace
替换基于两个数组的字符串,这两个数组都存储在外部文本文件中。
//All codes listed in a txt file
$codes = file('aircodes.txt');
//Full name replacements
$full = file('fullcodes.txt');
$string = "BUF YUL YYZ";
$newstring = str_replace($codes, $full, $string);
echo $newstring;
我的aircodes.txt
文件的内容:
BUF
YUL
YYZ
我的fullcodes.txt
文件的内容:
Buffalo
Montreal
Toronto
尽管如此,我的代码都没有被城市名称取代。如果我从每个文本文件中删除除了一行之外的所有内容,它就会起作用。
答案 0 :(得分:4)
这是因为在最后一个元素中,每个元素中仍然有一个新行符号(在字符串中表示它不会找到:BUF\n
或YUL\n
,但是{{1} })。所以只需附加一个flag来忽略这些字符,如下所示:
YYZ
如果您执行$codes = file('aircodes.txt', FILE_IGNORE_NEW_LINES);
//... ^^^^^^^^^^^^^^^^^^^^^ See here
$full = file('fullcodes.txt', FILE_IGNORE_NEW_LINES);
:
var_dump($codes)