字符串操作 preg_replace 或 str_replace
我需要用另一个词替换一个词。但
$var= str_replace($linklabel[$k], $linklabelmod[$k], $var);
没有给出期望的结果。例如我有一个字符串
$var="the theory of them thesis";
$linklabel[1]="the";
$linklabelmod[1]="hhh";
我需要的是,我只想替换单词“the”。但由于“the”在“theory”、“thesis”和“them”中重复出现,所有以三个字母开头的字母也将被替换。然后输出变成 $var="hhh hhhory of hhhm hhhsis";//错误 但我需要输出 $var="hhh 论文理论";//写 我不擅长解释问题,请原谅...
提前致谢...
从我(paxdiablo)可以从OP的评论中收集到的信息,这是修改后的代码(仍然声称不起作用):
foreach($xpath->query('//a') as $element) {
$linklabel[] = $element->textContent;
$link[] = $element->getAttribute("href");
$i=$i+1;
}
for($k=0;$k<$i;$k++) {
$linklabelmod[$k] = str_replace($linklabel[$k], $linklabel[$k]."[$k]", $linklabel[$k]);
$var = preg_replace ('/\b'.preg_quote($linklabel[$k]).'\b/', $linklabelmod[$k], $var);
}
print $var; //printing web page
I need to replace a word with another word. But
$var= str_replace($linklabel[$k], $linklabelmod[$k], $var);
is not giving the desired result. For example i have a string
$var="the theory of them thesis";
$linklabel[1]="the";
$linklabelmod[1]="hhh";
What i need is, i just want to replace the word "the". But since "the" is repeated in "theory" "thesis" and "them", all those starting three letters are also getting replaced. Then output becomes
$var="hhh hhhory of hhhm hhhsis";//wrong
But i need the output
$var="hhh theory of them thesis";//write
I am bad at explaining a question, plz excuse me...
Thanks in advance....
From what I (paxdiablo) can gather from the OP's comments, this is the code following modifications (still claimed not to work):
foreach($xpath->query('//a') as $element) {
$linklabel[] = $element->textContent;
$link[] = $element->getAttribute("href");
$i=$i+1;
}
for($k=0;$k<$i;$k++) {
$linklabelmod[$k] = str_replace($linklabel[$k], $linklabel[$k]."[$k]", $linklabel[$k]);
$var = preg_replace ('/\b'.preg_quote($linklabel[$k]).'\b/', $linklabelmod[$k], $var);
}
print $var; //printing web page
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
执行您想要的操作的正常方法是使用正则表达式替换单词边界:
或:
The normal way of doing what you want is to use a regular expression replace with word boundaries:
or:
如果你想使用 str_replace 函数,请插入空格 :)
php > $var = "他们的理论论文";
php > $var = str_replace(array(" the ", "the "), 'hhh', $var);
php >;回显 $var;
Insert white space :) if you want to use str_replace function
php > $var = "the theory of them thesis";
php > $var = str_replace(array(" the ", "the "), 'hhh', $var);
php > echo $var;
好吧,我总是建议使用 str_replace 而不是 preg_replace,但在这种情况下你可能必须这样做。
不要忘记 preg_qoute 文本以最大程度地减少错误数量
Well i would always advise in using str_replace over preg_replace but in this case you might have to.
Dont forget to preg_qoute the text to minimize the amount of errors