提取括号内文本的最佳方法-PHP解析

提取括号内文本的最佳方法-PHP解析,php,string,parsing,Php,String,Parsing,从字符串中获取文本的最佳方式是什么。我在数据库中有一个长文本字段,目前为: <ul> <li>Winner on Laps #153 LemonAid Racing (1996 Geo Metro, Davenport Iowa)</li> <li>Winner on Index of Effluency #42 J CrewD (1985 Jagaur XJ6, Knoxville Tn) </li> <li>

从字符串中获取文本的最佳方式是什么。我在数据库中有一个长文本字段,目前为:

<ul>
 <li>Winner on Laps #153 LemonAid Racing (1996 Geo Metro, Davenport Iowa)</li>
 <li>Winner on Index of Effluency #42 J CrewD (1985 Jagaur XJ6, Knoxville Tn)     </li>
 <li>Winner, Class A (The Good) #153 LemonAid Racing (1996 Geo Metro, Davenport Iowa)</li>
 <li>Winner, Class B (The Bad) #128 Duff Beer (1994 Honda Civic, Raleigh NC and Atlanta GA)</li>
 <li>Winner, Class C (The Ugly) #64 Team Fairlylame (1964 Ford Fairlane, Savannah GA)</li>
 <li>Organizer's Choice #54 Knoxvegas Lowballers (1998 Ford Contour SVT, Knoxville TN)</li>
 <li>Most Heroic Fix #40 Mock Grass Racing (1998 Kia Sephia, Columbia SC)</li>
 <li>Judges' Choice #85 Apocalyptic Racing (1978 Toylet Celica, St Louis mo)     </li>
 <li>Judges' Choice #2 #17 Fireball Racing (1991 Ford Escort, Aurora IL)</li>
</ul>
  • 洛杉矶153柠檬水赛车赛冠军(1996年,爱荷华达文波特Geo Metro)
  • 废水指数获奖者#42 J CrewD(1985年贾高尔XJ6,田纳西州诺克斯维尔)
  • 优胜者,A级(好)#153柠檬水赛跑(1996年爱荷华州达文波特Geo Metro)
  • 优胜者,B级(坏)#128达夫啤酒(1994年本田思域、北卡罗来纳州罗利和佐治亚州亚特兰大)
  • 优胜者,C级(丑陋)#64队Fairlylame(1964年,佐治亚州萨凡纳市福特费尔兰)
  • 组织者的选择#54诺克斯维加斯Lowballers(1998福特Contour SVT,田纳西州诺克斯维尔)
  • 最英勇的Fix#40模拟草地赛(1998年起亚赛菲亚,哥伦比亚特区)
  • 法官的选择#85启示录赛车(1978年托伊莱·塞利卡,密苏里州圣路易斯)
  • 法官的选择#2#17火球赛(1991年福特护卫队,伊利诺伊州奥罗拉)
我说我想得到字符串“1996年爱荷华州达文波特Geo Metro”,“1985年田纳西州诺克斯维尔Jagaur XJ6”。。等从整个字符串(括号内的文本)中删除。最好的方法是什么

  • 假设我想把“li”中的所有文本都放到符号“#”之前,这可能吗
  • 提前感谢

    您可以尝试使用

    例如,要查找(括号内的文本),可以使用以下正则表达式:

    /(?<=\()([^\)]+)(?=\))/
    
    /(?您可以尝试使用

    例如,要查找(括号内的文本),可以使用以下正则表达式:

    /(?<=\()([^\)]+)(?=\))/
    
    /(?使用

  • preg\u match\u all('/\([^\]+)\)/',$content,$matches);
  • preg\u match\u all('/^[\s]*\([^\]+)\\/m',$content$matches);
  • $matches[1]
    将包含捕获的文本。

    使用

  • preg\u match\u all('/\([^\]+)\)/',$content,$matches)
  • preg\u match\u all('/^[\s]*\([^\]+)\\/m',$content,$matches)


  • $matches[1]
    将包含捕获的文本。

    尝试使用
    regex
    进行此操作。使用
    preg\u match\u all
    尝试使用
    regex
    进行此操作。使用
    preg\u match\u all
    为什么要逃避
    ?你不应该在
  • 之后开始吗?去试试这些吧!非常感谢。没问题。如果这个答案有助于你解决问题,请将其标记为已接受。祝你好运!:)@KenRyanhi@rafascar我怎么能从“圈赛冠军”#153柠檬汁赛车(1996年爱荷华州达文波特Geo Metro)中获得“车队名称”呢?基本上,我想从这一部分获得“柠檬汁赛车”。是否是第一个数字之后“(”)之前的字符串?再次感谢您的帮助!要仅获取括号之间的文本,例如,要获取与(1996 Geo Metro,Davenport Iowa)相同的模式,您可以尝试以下正则表达式:
    (?你为什么要逃避
    #
    ?你不应该在
  • 之后开始吗?尝试一下!谢谢!没问题。如果这个答案帮助你解决了问题,请将其标记为已被接受。祝你好运!:)@KenRyanhi@rafascar我如何从“圈上的赢家”#153柠檬水赛车(1996年爱荷华州达文波特Geo Metro)中获得“车队名称”基本上,我想从这一部分中得到“柠檬水赛跑”。它是第一个数字之后“(”)之前的字符串吗?再次感谢您的帮助!要仅获取括号之间的文本,它们的模式与(1996 Geo Metro,Davenport Iowa)相同,例如,您可以尝试以下正则表达式:
    (?无需将
    \s
    放入
    […]
    。你确定吗?试着用我的正则表达式来捕获而不使用它。:-)我为什么要这样做,它完全一样。嗯,不,不是真的。详细地说,你不能仅仅看问题就知道,但实际上每行的开头和
  • 标记之间都有空格。尝试过了。它是一样的。不需要在
    […]中放置
    \s
    。]
    。你确定吗?尝试使用我的正则表达式来捕获,但不使用它。:-)我为什么要这样做,它完全一样。嗯,不,不是真的。详细地说,你不能只看问题就知道,但实际上在每行的开头和
  • 标记之间都有空格。尝试过了。它是一样的。