首页 / PHP / PHP-比较字符串部分与数组值
PHP-比较字符串部分与数组值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-比较字符串部分与数组值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4077字,纯文字阅读大概需要6分钟。
内容图文
![PHP-比较字符串部分与数组值](/upload/InfoBanner/zyjiaocheng/663/0d3940bae5e64df7bb3824d6b50a51d4.jpg)
我有一个字符串在PHP中形成HTML选择框.我也有一个数组.我想要的是:我想将选择框的选项与数组元素进行比较,而只将与数组元素匹配的选项保留在选择框中.
以下是使概念更清晰的代码.
字符串形成选择框为:
$str = '<select name="options[45]" id="select_45" class=" required-entry product-custom-option" title=""? onchange="opConfig.reloadPrice()">
<option value="" >-- Please Select --</option>
<option value="76"? price="0" >Certified Networking </option>
<option value="89"? price="0" >Certified Virtualization </option>
<option value="90"? price="0" >Certified Expert Virtualization </option><option value="91"? price="0" >Certified Mobility </option>
<option value="92"? price="0" >Certified Professional Networking </option><option value="93"? price="0" >Certified Professional Virtualization </option>
</select>';
数组是:
$array = array('-- Please Select --','Certified Networking', 'Certified Mobility');
经过比较,我想要字符串为:
$str = '<select name="options[45]" id="select_45" class=" required-entry product-custom-option" title=""? onchange="opConfig.reloadPrice()">
<option value="" >-- Please Select --</option>
<option value="76"? price="0" >Certified Networking </option>
<option value="91"? price="0" >Certified Mobility </option>
</select>';
我尝试使用DOM,这使我可以从字符串中获取选项文本.但是我一直坚持下去,找不到进一步的方法.
$dom = new DOMDocument();
$dom->loadHTML($str);
$xpath = new DOMXPath($dom);
$options = $xpath->query('//select/option');
foreach ($options as $option) {
echo $option->nodeValue;
}
解决方法:
您可以使用正则表达式的功能,如下所示.但请记住,它仅适用于您的类型,这意味着仅当您具有select和options标记时才有效.
$str = '<select name="options[45]" id="select_45" class=" required-entry product-custom-option" title="" onchange="opConfig.reloadPrice()">
<option value="" >-- Please Select --</option>
<option value="76" price="0" >Certified Networking </option>
<option value="89" price="0" >Certified Virtualization </option>
<option value="90" price="0" >Certified Expert Virtualization </option><option value="91" price="0" >Certified Mobility </option>
<option value="92" price="0" >Certified Professional Networking </option><option value="93" price="0" >Certified Professional Virtualization </option>
</select>';
$array = array('-- Please Select --','Certified Networking', 'Certified Mobility');
foreach ($array as $index=>$value) {
$array[$index] = preg_replace(array('/([\-\+\*\$\^\{\}\[\]\<\>\.\?\\/\\\\])/', '/\s+/'), array('\\\\$1', '\\\\s+'), $value);
}
$str = explode("\n", str_replace('</option><option', "</option>\n<option", $str));
$regexp = '/^(?:\s*(?:\<\/?select[^\>]*\>[^\n]*|\<option[^\>]*\>\s*(?:'.implode('|', $array).')\s*\<[^\n]*)\s*)$/i';
foreach($str as $index=>$value) {
if (!preg_match($regexp, $value, $match)) {
unset($str[$index]);
}
}
$str = implode("\n",$str);
编辑
如果您有任何包含选择选项大小写的html,请使用下面编辑的html:
$str = '<select name="options[45]" id="select_45" class=" required-entry product-custom-option" title="" onchange="opConfig.reloadPrice()">
<option value="" >-- Please Select --</option>
<option value="76" price="0" >Certified Networking </option>
<option value="89" price="0" >Certified Virtualization </option>
<option value="90" price="0" >Certified Expert Virtualization </option><option value="91" price="0" >Certified Mobility </option>
<option value="92" price="0" >Certified Professional Networking </option><option value="93" price="0" >Certified Professional Virtualization </option>
</select>';
$array = array('-- Please Select --', 'Certified Networking', 'Certified Mobility');
foreach ($array as $index => $value) {
$array[$index] = preg_replace(
array('/([\-\+\*\$\^\{\}\[\]\<\>\.\?\\/\\\\])/', '/\s+/'),
array('\\\\$1', '\\\\s+'),
$value
);
}
$str = explode("\n", str_replace('</option><option', "</option>\n<option", $str));
$regexp = '/^(?:\s*(?:\<option[^\>]*\>\s*(?:' . implode('|', $array) . ')\s*\<[^\n]*)\s*)$/i';
foreach ($str as $index => $value) {
if (stripos($value, '<option') !== false && !preg_match($regexp, $value, $match)) {
unset($str[$index]);
}
}
$str = implode("\n", $str);
内容总结
以上是互联网集市为您收集整理的PHP-比较字符串部分与数组值全部内容,希望文章能够帮你解决PHP-比较字符串部分与数组值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。