假设我将以下内容放入文本框中:
1|[Guangzhou Evergrande](//www.gzevergrandefc.com/)|6|5-1-0|+15|**16**
2|[Shandong Luneng](//www.lunengsports.com/)|7|5-1-1|+7|**16**
3|[Qingdao Jonoon](//www.zhongnengfc.com/)|7|4-3-0|+4|**15**
4|[Beijing Guoan](//www.fcguoan.com/)|7|3-3-1|+2|**12**
当我按回车键时,它会占用[
和]
以及(
和)
之间的内容并将其放入如下的新行:
if ($name == "NAME_HERE") $name = "[".$name."](URL_HERE)";
我尝试使用preg_match
并使用此模式:$pattern = '/^[/';
和$pattern_end = '/^]/';
作为名称 - jsut进行测试 - 但我无法让它工作....
这是我到目前为止所做的:
$string = '1|[Guangzhou Evergrande](//www.gzevergrandefc.com/)|6|5-1-0|+15|**16**';
$pattern = '/\[(.*?\)].*?\((.*?)\)/';
$replacement = 'if ($name == "{1}") $name = "[".$name."]({2})";';
echo preg_replace($pattern, $replacement, $string);
答案 0 :(得分:2)
你的模式应该是
'/\[(.*?)\]\((.*?)\)/'
因为[]和()是特殊字符。使用preg_match_all()函数
当你使用preg_match_all时,你可以把put()用于子匹配(子模式)
例如
<?php
$string = '1|[Guangzhou Evergrande](//www.gzevergrandefc.com/)|6|5-1-0|+15|**16**';
$matches = array();
preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $string, $matches);
var_dump($matches);
?>
答案 1 :(得分:1)
也许我并不完全明白你在这里做了什么,但是,我看到一个可以毫不费力地爆炸的数据结构。例如:
function get_football( $text ) {
$r = array();
$t = explode("\n", $text );
foreach( $t as $l ) {
$n = explode("|", $l);
$r[] = $n;
}
return( $r );
}
这将为您提供一个结构良好的数据集,您可以通过这些数据进行操作并进一步处理。如果原始文本存储在$ variable0中,print_r( get_football( $variable0 ) );
将显示一个很好的结构:
Array
(
[0] => Array
(
[0] => 1
[1] => [Guangzhou Evergrande](//www.gzevergrandefc.com/)
[2] => 6
[3] => 5-1-0
[4] => +15
[5] => **16**
)
[1] => Array
当然,$ n [1]名称可以在循环中进一步细分。无论如何,此后,您可以使用foreach()循环而不是硬编码菜单选项来遍历您正在构建的任何菜单。需要考虑的事情。