Php 如何替换字符串?
我有一个包含两个Php 如何替换字符串?,php,javascript-events,Php,Javascript Events,我有一个包含两个 '; 如何使用PHPpreg\u replace或其他方法,将单独的onclick属性添加到该字符串中的标记,即第一个标记onclick=“test1()”,下一个标记onclick=“test2()”等 $str = str_replace(' href="',' onclick="test(this)" href="',$str); 这比preg_replace要快得多,因为它不需要匹配模式。 当然,这取决于你使用它的方式 这比preg_replace要快得多,因为它不
';
如何使用PHPpreg\u replace
或其他方法,将单独的onclick
属性添加到该字符串中的
标记,即第一个
标记onclick=“test1()”
,下一个
标记onclick=“test2()”
等
$str = str_replace(' href="',' onclick="test(this)" href="',$str);
这比preg_replace要快得多,因为它不需要匹配模式。
当然,这取决于你使用它的方式
这比preg_replace要快得多,因为它不需要匹配模式。
当然,这取决于您使用它的方式。注意:此解决方案仅适用于您当前的字符串模式(似乎是一组链接)
注2:您也可以使用
最后回答你的问题
$str = str_ireplace ('<a ', '<a onclick="doSomething(this)"', $str);
$str=str\u ireplace('
编辑
@Eldros指出,每个环节的方法都需要不同
在这一点上,我绝对建议您在客户端处理它,但是如果您必须使用PHP,您可以使用类似于DOM解析的库。
请注意,这并不使用DOM操作,而是使用字符串解析。这可能对您有影响,也可能对您没有影响
这是文档中显示如何修改字符串的示例。有关完整用法,请参阅文档:
//从字符串创建DOM
$html=str_get_html('HelloWorld');
$html->find('div',1)->class='bar';
$html->find('div[id=hello]',0)->innertext='foo';
echo$html;//输出:fooWorld
在您的情况下,您只需加载带有str\u get\u html
的字符串,并在其中逐一修改链接即可。注意:此解决方案仅适用于您当前的字符串模式(似乎是链接的集合)
注2:您也可以使用
最后回答你的问题
$str = str_ireplace ('<a ', '<a onclick="doSomething(this)"', $str);
$str=str\u ireplace('
编辑
@Eldros指出,每个环节的方法都需要不同
在这一点上,我绝对建议您在客户端处理它,但是如果您必须使用PHP,您可以使用类似于DOM解析的库。
请注意,这并不使用DOM操作,而是使用字符串解析。这可能对您有影响,也可能对您没有影响
这是文档中显示如何修改字符串的示例。有关完整用法,请参阅文档:
//从字符串创建DOM
$html=str_get_html('HelloWorld');
$html->find('div',1)->class='bar';
$html->find('div[id=hello]',0)->innertext='foo';
echo$html;//输出:fooWorld
在您的情况下,您只需使用str\u get\u html
加载字符串,然后逐个循环修改链接。我没有使用此库,但在的帮助下,您可以使用此代码尝试添加函数:
//array containing your functions names
$functions = array(test1, test2);
//Parse the string to get the HTML DOM
$html = str_get_html($str);
//Retrieve the array of anchors
$links = $html->find('a');
//Loop through the anchors and add the onclick events
for($i=0;$i<count($links);$i++){
$links[$i]->onclick = $functions[$i];
}
//return the html to the string
$html->save();
检索函数很重要,因为links[i].id
是一个字符串,AddEventListener不会使用字符串而不是函数。由于window.function
与window['function']
相同,因此转换非常完美
与PHP代码一样,这可能是根据您的环境而改变的对象。例如,如果所有需要onchange
eventHandler的锚都位于id为“MyLink”的div
标记下,您可以通过document.getElementsByTagName(“a”);
通过document.getElementById(“MyLink”)来改变.getElementsByTagName(“a”);
我没有使用此库,但在的帮助下,您可以使用此代码尝试添加函数:
//array containing your functions names
$functions = array(test1, test2);
//Parse the string to get the HTML DOM
$html = str_get_html($str);
//Retrieve the array of anchors
$links = $html->find('a');
//Loop through the anchors and add the onclick events
for($i=0;$i<count($links);$i++){
$links[$i]->onclick = $functions[$i];
}
//return the html to the string
$html->save();
检索函数很重要,因为links[i].id
是一个字符串,AddEventListener不会使用字符串而不是函数。由于window.function
与window['function']
相同,因此转换非常完美
与PHP代码一样,这可能是根据您的环境而改变的对象。例如,如果所有需要onchange
eventHandler的锚都位于id为“MyLink”的div
标记下,您可以通过document.getElementsByTagName(“a”);
通过document.getElementById(“MyLink”)来改变.getElementsByTagName(“a”);
php
是一个比meta
好得多的标记,你不认为吗?;)它必须纯php,还是允许javascript解决方案?php
是一个比meta
好得多的标记,你不认为吗?;)它必须纯php,还是允许javascript解决方案?很好,但这并不是皇家想要的。每个
都有相同的onclick处理程序,而不是test1()、test2()、…
很好的处理程序,但不是@Royal真正想要的。对于每个<代码> <代码>,您有相同的OnCutter处理程序,而不是<代码> TEST1()、Test2()、… @ JONNP考虑匹配<代码> @ JohnP,它不是为OnCutt事件赋予所有锚函数相同的功能吗?用另一个选项编辑了我的答案。谢谢提醒:)@Eldros aaa刚刚注意到你指向了完全相同的库!希望你不介意!我已经用过了,可以确认他可以用它做他需要的事情this@JohnP没问题。最后,我们得出了相同的解决方案不过我有一个问题:在php网站上,我研究了您使用的函数str_ireplace
,以及@Christian使用的函数str_replace
,我不明白为什么在这种情况下我应该使用一个而不是另一个。有没有我没有意识到的优势?@ JNNP考虑匹配<代码> @ JohnP,它不会给所有锚定相同的函数吗?
//Add an event listener that will trigger when the content of the page is loaded
document.addEventListener("DOMContentLoaded", function() {
var i;
//retrieve all the anchors
var link = document.getElementsByTagName("a");
//Loop through the anchors
for(i=0; i<links.length; i++){
//If the anchor has an id
if(links[i].id){
//retrieve the function
var myFuncName = links[i].id;
var myFunction = window[myFuncName];
//add the event listener
links[i].addEventListener("change", myFunction, false);
}
}
}, false);