Как я разделяю данные из HTML-тэгов [дубликат]

строка. Ярлык формата:

public static class StringExtensions
{
    // Enable quick and more natural string.Format calls
    public static string F(this string s, params object[] args)
    {
        return string.Format(s, args);
    }
}

Пример:

var s = "The co-ordinate is ({0}, {1})".F(point.X, point.Y);

Для быстрой копии-и-вставки идут сюда .

разве Вы не находите его более естественным для типа "some string".F("param") вместо string.Format("some string", "param")?

Для больше читаемый имя, попробуйте один из них предложение:

s = "Hello {0} world {1}!".Fmt("Stack", "Overflow");
s = "Hello {0} world {1}!".FormatBy("Stack", "Overflow");
s = "Hello {0} world {1}!".FormatWith("Stack", "Overflow");
s = "Hello {0} world {1}!".Display("Stack", "Overflow");
s = "Hello {0} world {1}!".With("Stack", "Overflow");

..

6
задан 12 July 2009 в 20:53
поделиться

6 ответов

Если мы используем регулярные выражения, мне нравится этот синтаксис, похожий на Perl:

$test = "<option value=\"abc\" >Test - 123</option>\n" .
    "<option value=\"abc\" >Test - 456</option>\n" .
    "<option value=\"abc\" >Test - 789</option>\n"; 

for ($offset=0; preg_match("/<option[^>]*>([^<]+)/",$test, $matches, 
                        PREG_OFFSET_CAPTURE, $offset); $offset=$matches[1][1])
   print($matches[1][0] . "\n");'
0
ответ дан 17 December 2019 в 04:50
поделиться

Есть много способов, и какой из них лучший, зависит от большего количества деталей, чем вы указали в своем вопросе.
Одна из возможностей: DOMDocument и DOMXPath

<?php
$doc = new DOMDocument;
$doc->loadhtml('<html><head><title>???</title></head><body>
  <form method="post" action="?" id="form1">
      <div>
        <select name="foo">
        <option value="abc" >Test - 123</option>
        <option value="def" >Test - 456</option>
        <option value="ghi" >Test - 789</option>
      </select>
    </div>
  </form>
</body></html>');

$xpath = new DOMXPath($doc);
foreach( $xpath->query('//form[@id="form1"]//option') as $o) {
    echo 'option text: ', $o->nodeValue, "  \n";
}

печатает

option text: Test - 123  
option text: Test - 456  
option text: Test - 789  
3
ответ дан 17 December 2019 в 04:50
поделиться

Этот код загружает значения в массив, предполагая, что между тегами параметров есть разрывы строк, как вы показали:

// Load your HTML into a string.
$html = <<<EOF
<option value="abc" >Test - 123</option>
<option value="def" >Test - 456</option>
<option value="ghi" >Test - 789</option>
EOF;

// Break the values into an array.
$vals = explode("\n", strip_tags($html));
1
ответ дан 17 December 2019 в 04:50
поделиться

http://networking.ringofsaturn.com/Web/removetags.php

preg_match_all("s/<[a-zA-Z\/][^>]*>//g", $data, $out);
0
ответ дан 17 December 2019 в 04:50
поделиться

Если у вас не просто перелом, подобный упомянутому, используйте настоящий синтаксический анализатор, например DOMDocument , который можно пройти с помощью DOMXPath .

В противном случае попробуйте это регулярное выражение вместе с preg_match_all :

<option(?:[^>"']+|"[^"]*"|'[^']*')*>([^<]+)</option>
1
ответ дан 17 December 2019 в 04:50
поделиться

Использование strip_tags , если я не понимаю вопрос.

    $string = '<option value="abc" >Test - 123</option>
    <option value="def" >Test - 456</option>
    <option value="ghi" >Test - 789</option>';

    $string = strip_tags($string);

Обновление: Упущено, что вы нечетко указываете массив в своем вопросе. В этом случае, и я уверен, что существует более чистый метод, я бы сделал что-то вроде:

$teststring = '<option value="abc" >Test - 123</option>
<option value="def" >Test - 456</option>
<option value="ghi" >Test - 789</option>';

$stringarray = split("\n", strip_tags($teststring));
print_r($stringarray);

Обновление 2: И просто в начало и конец, чтобы представить его, как вы первоначально просили (не массив как нас, возможно, обманули, попробуйте следующее:

$teststring = '<option value="abc" >Test - 123</option>
<option value="def" >Test - 456</option>
<option value="ghi" >Test - 789</option>';

$stringarray = split("\n", strip_tags($teststring));

$newstring = join($stringarray, "','");
echo "'" . $newstring . "'\n";
0
ответ дан 17 December 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: