строка. Ярлык формата:
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");
..
Если мы используем регулярные выражения, мне нравится этот синтаксис, похожий на 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");'
Есть много способов, и какой из них лучший, зависит от большего количества деталей, чем вы указали в своем вопросе.
Одна из возможностей: 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
Этот код загружает значения в массив, предполагая, что между тегами параметров есть разрывы строк, как вы показали:
// 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));
http://networking.ringofsaturn.com/Web/removetags.php
preg_match_all("s/<[a-zA-Z\/][^>]*>//g", $data, $out);
Если у вас не просто перелом, подобный упомянутому, используйте настоящий синтаксический анализатор, например DOMDocument , который можно пройти с помощью DOMXPath .
В противном случае попробуйте это регулярное выражение вместе с preg_match_all
:
<option(?:[^>"']+|"[^"]*"|'[^']*')*>([^<]+)</option>
Использование 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";