I have this uncomplete query:
update `wp_posts` set `post_content` = replace(`post_content`, 'src="/uploads/*"', 'src="blog/uploads/*"');
In the field post_content I have some html code.
I want to search for src="/uploads/*", * = any image.
And replace it with src="blog/uploads/*" and keep the image;
How to do this?
Thanks
example text:
<p><strong><em>De tips en tricks, die in de Flexmailblog worden meegegeven, zijn een handig vertrekpunt voor de e-mailmarketeer. Maar hoe ziet de ideale e-mailcampagne er nu precies uit? </em></strong></p><br /><!-- s9ymdb:138 --><img class="serendipity_image_center" width="400" height="519" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="/uploads/asu_example.jpg" alt="" /><!--more--><br /><br />
<div align="justify">Laten we beginnen door de illusie alvast te doorprikken: een ideale e-mailcampagne bestaat niet. Maar e-mailmarketeers kunnen na een grondige analyse van de positieve en de ‘pijnpunten’ van de campagne hun conclusies trekken. Perfect bestaat dan wel niet, maar het kan wel benaderd worden.
<br /><br />In deze blogpost zetten we de tering naar de nering. We nemen er een e-mailcampagne van de Amerikaanse vrijwilligersorganisatie Arizona State University (ASU) in the Community bij. De organisatie stuurt twee keer per maand een nieuwsbrief uit om het stafpersoneel, de studenten en de leden van de gemeenschap te informeren over de laatste nieuwtjes. Het doel van de communicatie is het aandikken van de participatie. Vandaag bespreken we de positieve elementen. <br /><br /><strong>Zichtbaar<br /></strong><br />De ‘Join mailing list’-knop is duidelijk zichtbaar en beantwoordt aan één van de sleutelobjectieven van de e-mailcommunicatie namelijk meer inschrijvingen genereren op de nieuwsbrief. Wanneer de nieuwsbrief doorgestuurd wordt naar het netwerk van de ontvanger kan de begunstigde zich meteen inschrijven. <br /><br /><strong>Brand identity<br /></strong><br />Het toevoegen van het logo van de organisatie geeft de nieuwsbrief een sterke <em>brand identity</em>. Het logo is meteen herkenbaar voor de ontvangers, waardoor ze de nieuwsbrief niet gaan categoriseren onder junkmail. <br /><br /><strong>Aandacht trekken<br /></strong><br />De verzender maakt gebruik van een afbeelding om aandacht te trekken naar het belangrijkste artikel van de nieuwsbrief. Afbeeldingen zijn bovendien handig om een groot tekstblok op te breken. <br /><br /><strong>Structuur<br /></strong><br />De nieuwsbrief wordt ingedeeld in verschillende tekstvakken met een eigen achtergrondkleur. Op die manier voeg je structuur toe aan je e-mailcampagne. Bovendien is het voor de ontvanger gemakkelijker om de nieuwsbrief te scannen op content die voor hem interessant is. <br /><br /><strong>Linken<br /></strong><br />De verzender heeft een link toegevoegd in de nieuwsbrief. Dat is een absolute must. Je kan immers niet altijd voorspellen hoe de e-mailcampagne er gaat uitzien in de verschillende e-mailcliënten. Een link, die de ontvanger naar je website verwijst, kan dat voor je oplossen. Voeg een archief nieuwsbrieven toe aan je website zodat je ontvanger de originele versie daar kan bezichtigen.<br /><br />Volg ons en ontdek de Flexmailtips om de e-mailcampagne te verbeteren.
</div>
Is this what you mean?
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, 'src="/uploads/', 'src="blog/uploads/');
Related
In the address fields for WooCommerce people tend to forget to put in a housenumber, so to fix this I used a code that requires them to input numbers in the address field.
add_action('woocommerce_checkout_process', 'custom_validation_process');
function custom_validation_process()
{
global $woocommerce;
if(isset($_POST['billing_address_1']) and $_POST['billing_address_1'] != '')
{
if (!preg_match('/([0-9]+)/Uis', $_POST['billing_address_1']))
{
if(function_exists('wc_add_notice'))
wc_add_notice( __('Om het pakket te bezorgen hebben we ook een huisnummer nodig. Voeg deze toe in het adresveld.'), 'error' );
else
$woocommerce->add_error( __('Om het pakket te bezorgen hebben we ook een huisnummer nodig. Voeg deze toe in het adresveld.') );
}
}
if(isset($_POST['ship_to_different_address']))
{
if(isset($_POST['shipping_address_1']) and $_POST['shipping_address_1'] != '')
{
if (!preg_match('/([0-9]+)/Uis', $_POST['shipping_address_1']))
{
if(function_exists('wc_add_notice'))
wc_add_notice( __('Om het pakket te bezorgen hebben we ook een huisnummer nodig. Voeg deze toe in het adresveld.'), 'error' );
else
$woocommerce->add_error( __('Om het pakket te bezorgen hebben een ook je huisnummer nodig. Voeg deze toe in het adresveld.') );
}
}
}
}
It worked for sometime but I am starting to notice some people are now not forgetting the housenummer but the street name as well. The field itself is required of itself but I need to force them to put in both text and numbers.
Can anybody help me out in how to add a text requirement to this code next to the numbers?
I've Googled for a while but haven't found any solution so far. I'm trying to replace some placeholders in a Word-document using PHP. All placeholders are replaced succesfully, except the DATE_PLACEHOLDER. See code below:
// De tickets aanmaken
$zip = new ZipArchive;
// Variablen declareren
$file_to_modify = 'word/document.xml';
$template_file = "ticket_template.docx";
$new_file = 'ticket_to_mail.docx';
// Kopie maken van de template om te bewerken
copy($template_file,$new_file);
if ($zip->open($new_file) === TRUE) {
// Bestand inlezen
$old_contents = $zip->getFromName($file_to_modify);
echo $old_contents . "<br>";
// Placeholders in het template invullen
$new_contents = str_replace('DISPLAYNAME_PLACEHOLDER', $displayname, $old_contents);
echo $new_contents . "<br>";
$new_contents = str_replace('DATE_PLACEHOLDER', $date, $new_contents); // NOT WORKING
echo $new_contents . "<br>";
$new_contents = str_replace('ROW_PLACEHOLDER', $row, $new_contents);
echo $new_contents . "<br>";
$new_contents = str_replace('SEAT_PLACEHOLDER', $seat, $new_contents);
echo $new_contents . "<br>";
$new_contents = str_replace('NAME_PLACEHOLDER', $fullname, $new_contents);
echo $new_contents . "<br>";
// Oude inhoud verwijderen
$zip->deleteName($file_to_modify);
// Nieuwe inhoud schrijven
$zip->addFromString($file_to_modify, $new_contents);
// Bestand opslaan
$return =$zip->close();
if ($return !== TRUE){
echo "Error: fout tijdens het bewerken van het ticket-template";
}
} else {
echo "Error: fout tijdens het bewerken van het ticket-template";
}
The $date variable is declared here: $date = date('d-m-Y H:i', StrToTime($value['date']));
I already tried echoing $date, checking that it's value is correct, which it is. Also, as you can see in the example above, I tried echoing the contents of the Word-document everytime I replaced something. This gave the following results:
right-1269100E-ticketDISPLAYNAME_PLACEHOLDER DATE_PLACEHOLDER Rij: ROW_PLACEHOLDER Stoel: SEAT_PLACEHOLDER NAME_PLACEHOLDERBedankt voor uw reservering voor DISPLAYNAME_PLACEHOLDER!
right-1269100E-ticketDen Hulster Musical DATE_PLACEHOLDER Rij: ROW_PLACEHOLDER Stoel: SEAT_PLACEHOLDER NAME_PLACEHOLDERBedankt voor uw reservering voor Den Hulster Musical!
right-1269100E-ticketDen Hulster Musical DATE_PLACEHOLDER Rij: ROW_PLACEHOLDER Stoel: SEAT_PLACEHOLDER NAME_PLACEHOLDERBedankt voor uw reservering voor Den Hulster Musical!
right-1269100E-ticketDen Hulster Musical DATE_PLACEHOLDER Rij: 1 Stoel: SEAT_PLACEHOLDER NAME_PLACEHOLDERBedankt voor uw reservering voor Den Hulster Musical!
right-1269100E-ticketDen Hulster Musical DATE_PLACEHOLDER Rij: 1 Stoel: 3 NAME_PLACEHOLDERBedankt voor uw reservering voor Den Hulster Musical!
right-1269100E-ticketDen Hulster Musical DATE_PLACEHOLDER Rij: 1 Stoel: 3 John JohnsonBedankt voor uw reservering voor Den Hulster Musical!
Any ideas on what I'm doing wrong?
I have a string like below and I want to parse the quote tag tag to <blockquote>"Content</blockquote> and want to replace the color tag with an empty string.
Input:
[quote="De real one ROOFVISSER":g3o3w038][color=green:g3o3w038]Thnxxx voor de oppeppende taal Egon, maar het zal niet veel helpen volgende week repetitieweek en samen wonen is net zo erg als een zeurende moeder waarvan je alleen maar mag gaan leren totdat je er koppijn van krijgt.......
[/color:g3o3w038][/quote:g3o3w038]
Output:
<blockquote>Thnxxx voor de oppeppende taal Egon, maar het zal niet veel helpen volgende week repetitieweek en samen wonen is net zo erg als een zeurende moeder waarvan je alleen maar mag gaan leren totdat je er koppijn van krijgt.......</blockquote>
I have already tried the below things and StackOverflow answers as well,
Re-enabling Quotes in phpBB Color Code
preg_match_all('/\[(b|i|size|color|center|quote|url|img)=?(.*?)\](.+?)\[\/\1\]/', $input_lines, $output_array);
but it returns the blank output array.
Please suggest me correct preg_replace pattern to filter out the content.
This is probably most easily done using two regexs, one to remove the [color...] tags and one to replace the [quote...] tags with <blockquote>:
$string = '[quote="De real one ROOFVISSER":g3o3w038][color=green:g3o3w038]Thnxxx voor de oppeppende taal Egon, maar het zal niet veel helpen volgende week repetitieweek en samen wonen is net zo erg als een zeurende moeder waarvan je alleen maar mag gaan leren totdat je er koppijn van krijgt.......
[/color:g3o3w038][/quote:g3o3w038]';
echo preg_replace(array('#\[/?color[^]]*]#', '#\[(/?)quote[^]]*]#'), array('', '<$1blockquote>'), $string);
Output:
<blockquote>Thnxxx voor de oppeppende taal Egon, maar het zal niet veel helpen volgende week repetitieweek en samen wonen is net zo erg als een zeurende moeder waarvan je alleen maar mag gaan leren totdat je er koppijn van krijgt....... </blockquote>
Demo on 3v4l.org
I m trying to get a id from a list by clicking on a button thats included in the list.The information in the list is generated from a openlayers map. The list is automatically generated from the map. The list looks like this. The id i want is the value of dans
The code i m using is as following:
<ul id ="table_overvieuw">
<#list features as feature>
<li><b>Type: ${type.name}</b> (id: <em>${feature.fid}</em>):
<ul>
<#list feature.attributes as attribute>
<#if !attribute.isGeometry>
<li><b>${attribute.name}</b></li>
${attribute.value}
</#if>
</#list>
<br><br>
<input type="button" name="geef slijpplaten info" class="ok" value="OK" onclick="myFunction()" />
</ul>
</li>
</#list>
</ul>
<script type="text/javascript">
function highlight(e) {
if (selected[0]) selected[0].className = '';
e.target.parentNode.className = 'selected';
}
var table = document.getElementById('table_overvieuw'),
selected = table.getElementsByClassName('selected');
table.onclick = highlight;
function myFunction(){
alert($("li.selected.value li:first" ).html());
}
</script>
The renderded html of the list is:
<html><head>
<style>
ul {
background: #cce5ff;
padding: 20px;
}
ul li {
margin: 5px;
}
.selected {
background-color: brown;
color: #FFF;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script><style type="text/css"></style>
</head>
<body><ul id="table_overvieuw">
<li><b>Type: dans_compleet</b> (id: <em>dans_compleet.fid--50014eb6_15374e6dbd1_-779f</em>):
<ul>
<li><b>dans</b></li>
40347
<li><b>x_coord</b></li>
221405
<li><b>y_coord</b></li>
591262
<li><b>dans_code</b></li>
40347
<li><b>archis_onderzoeksmeldingsnr</b></li>
21475 and 24639
<li><b>title</b></li>
De (on)mogelijkheden van archeologisch vriendelijk bouwen op terpen en wierden
<li><b>creator</b></li>
Huisman, D.J.
<li><b>contributor</b></li>
Doesburg, J. van; Muller, A.; Stover, J.
<li><b>date_created</b></li>
2009
<li><b>rights_holder</b></li>
Rijksdienst voor het Cultureel Erfgoed
<li><b>publisher</b></li>
Rijksdienst voor het Cultureel Erfgoed
<li><b>description</b></li>
Bouwaanvragen voor de realisatie van nieuwbouw op de wettelijk beschermde archeologische monumenten Kenwerd en Groot Wetsinge in de provincie Groningen vormden aanleiding in het kader van het MADE-project onderzoek te doen naar de mogelijke effecten van heien op wierdelagen en daarmee samenhangende grondsporen. Voorafgaande aan het heien zijn op beide locaties boringen gezet en proefsleuven gegraven om de stratigrafische opbouw te bepalen. Tevens zijn uit de profielen micromorfologische monsters genomen. In Kenwerd is er sprake van een wierde en in Groot Wetsinge van een valgen. Beide complexen lijken in de Late IJzertijd \xe2\x80\x93 Vroeg Romeinse tijd te zijn ontstaan. Nadat de heipalen waren aangebracht zijn opnieuw sleuven gegraven en daaruit micromorfologische monsters genomen. Op basis van de veldwaarnemingen en resultaten van de analyse van de slijpplaten kan worden aangenomen dat schade door ingeheide betonnen heipalen in beide gevallen slechts enkele centimeters buiten de paal zelf waarneembaar zal zijn. In algemene zin zal dit gelden voor alle terpen en wierden met een zelfde samenstelling en structuur. Hier moet evenwel de volgende kanttekening worden geplaatst. Uit de waarnemingen in een slijpplaat uit Groot Wetsinge blijkt dat zandlagen w\xc3\xa9l laterale effecten van heipalen kunnen laten zien. Als zandlagen dikker zijn en niet, zoals in Groot Wetsinge het geval is, kleilaagjes of -laminae bevatten, is de schade aanzienlijk groter. Dat geldt ook als het zand grover en/of hoekiger is. Daarnaast is het logisch dat een heipaal die door een bakstenen fundering, liggend hout of een compacte ,mestlaag wordt geheid, of die andere harde of taaie obstakels raakt, veel grotere schade zal aanrichten. Bij beslissingen over het al dan niet toestaan van heien op beschermde terpen en wierden moeten deze punten worden meegenomen.<br>Extrapolatie van de onderzoeksresultaten van Kenwerd en Groot Westinge naar andere gebieden is niet aan te raden. Terpen en wierden hebben een zeer specifieke samenstelling en genese. Het is daarom van groot belang om vergelijkbaar onderzoek uit te voeren in andere gebieden en op andersoortige vindplaatsen om die wijze uiteindelijk tot een algemener beeld te komen van de effecten van het gebruik van heipalen op terreinen met archeologische resten.<br><p></p>
<li><b>subject_abr_complex</b></li>
Nederzetting - Terp/wierde
<li><b>temporal_abr</b></li>
Middeleeuwen: 450 - 1500 nC and Nieuwe tijd: 1500 - heden
<li><b>spatial_point</b></li>
<li><b>spatial_coverage</b></li>
<li><b>relation</b></li>
Rapportage ARcheologische Monumentenzorg 176
<br><br>
<input type="button" name="geef slijpplaten info" class="ok" value="OK" onclick="myFunction()">
</ul>
</li>
</ul>
<script type="text/javascript">
function highlight(e) {
if (selected[0]) selected[0].className = '';
e.target.parentNode.className = 'selected';
}
var table = document.getElementById('table_overvieuw'),
selected = table.getElementsByClassName('selected');
table.onclick = highlight;
function myFunction(){
alert($("li.selected.value li:first" ).html());
}
</script>
</body></html>
If i click on my button(after selecting) i get dans and not the value of dans. Can somebody give me a hand?
Okay, this is a bit of a slap-dash approach, with little changes that need to be made to your code, but it should get you what you want.
Firstly wrap ${attribute.value} in span tags so we can select it in js/jquery. Then alter the alert in myFunction() to:
alert($("li.selected").next('span').html());
But I would recommend that you rethink your approach to this. I would have the values of the attributes, wrapped in span tags, inside the li tags. This would then make the selection process of the selected li much easier ($('li.selected span').html();) and reliable as, currently, there is no real guarantee that the next span is the corresponding value to the selected li.
Having problem with creating a datafeed with simpleXML. Currently using a loop to put products inside a data feed but the data of all the products is inserted inside the first product. Giving me the following output:
<products>
<product>
<product_id>36440</product_id>
<product_name>Snoerloze ramenwasser</product_name>
<brand/>
<description>
<h1>Droge schone ramen in een handomdraai... streeploos!</h1> <h3>Dankzij de nieuwe, inventieve draadloze ramenreiniger</h3> <ol> <li> Licht in gewicht, compact en extreem krachtig</li> <li>Bespaart u tijd</li> <li> Een snelle en effectieve manier om zowel binnen als buiten al uw ramen streeploos schoon en droog te maken. </li> <li>Laat geen watersporen, strepen of druppels achter</li> </ol> <h3><br />Bent u die strepen op het raam ook zo beu? Dit is de nieuwe - tijdbesparende - leuke manier om uw ramen streeploos schoon te krijgen in een handomdraai. Al het vuile water wordt opgezogen, zonder een druppel achter te laten. </h3> <p>Bestreepte, vuile ramen zijn verleden tijd, dankzij de snoerloze ramenwasser. Hij is gemakkelijk in gebruik, ideaal om condens druppels of kalkplekken tegen te gaan en om natte plekken snel en eenvoudig op te zuigen. Ideaal ook in de badkamer. Omdat de ramenwasser draadloos is kunt u hem zowel binnen als buiten gebruiken. Serres, badkamers, tafels, ramen en zelfs de caravan zijn in mum van tijd sprankelend schoon. Werkt op 4 AA alkaline batterijen, welke u van ons GRATIS meegeleverd krijgt!</p> <h3>Kinderlijk eenvoudig...</h3> <p>Spray het raamoppervlak in met uw favoriete glas reiniger, maak de oppervlakte schoon met een doek, en zuig met de ramenwasser het water weg. Zonder een druppel achter te laten, helemaal STREEPLOOS!... zo simpel is het!</p> <h3>Al het water wordt opgezogen in het interne waterreservoir. Voor een kristal helder STREEPLOOS resultaat zonder druppels.</h3>
</description>
<short_description>
Heeft u moeite om ruiten en spiegels streeploos te reinigen? Met deze ruitenreiniger wist en zuigt u in één handomdraai. Snoerloos, dus handzaam en licht van gewicht. Het water drupt niet op uw kozijnen of vensterbank, maar wordt door deze reiniger volledig opgezogen. Nawrijven is overbodig. Ideaal voor alle gladde oppervlakken.
</short_description>
<product_id>36287</product_id>
<product_name>Rekbare tuinslang 7,5m</product_name>
<brand/>
<description>
<h2>De meest ideale tuinslang ter wereld!</h2> <p>Sluit deze slang aan op de kraan en als het water erdoor stroomt verdubbelt de slang in lengte. Ideaal voor de tuin of het wassen van de buitenramen. Zodra u de watertoevoer sluit, krimpt de slang weer tot een klein handzaam pakketje. Inclusief aansluitstuk en instalbare spuitkop.</p>
</description>
<short_description>
</product>
<product/>
</products>
To create this feed i'm using the following php code:
$xml = new SimpleXMLElement('<products></products>');
$products = _prepareCollection();
$obj = Mage::getModel('catalog/product');
foreach($products as $productid)
{
$_product = $obj->load($productid);
$model = Mage::getModel('catalog/product');
$_product = $model->load($productid);
$_product->getFinalPrice();
$product = $xml->addChild('product');
$product->addChild('product_id',$_product->getSku());
$product->addChild('product_name',$_product->getName());
$product->addChild('brand',$_product->getAttributeText('manufacturer'));
$product->addChild('description',html_entity_decode($_product->getDescription()));
$product->addChild('short_description',html_entity_decode($_product->getShortDescription()));
}
Hope anyone can help me with this problem. Thanks in advance!
Doesn't actually have an answer, but after adding more childs into the feed the problem solved itself.
Working code:
$xml = new SimpleXMLElement('<products></products>');
$products = _prepareCollection();
$obj = Mage::getModel('catalog/product');
foreach($products as $productid)
{
$_product = $obj->load($productid);
$model = Mage::getModel('catalog/product');
$_product = $model->load($productid);
$_product->getFinalPrice();
$product = $xml->addChild('product');
$product->addChild('product_id',$_product->getSku());
$product->addChild('product_name',$_product->getName());
$product->addChild('brand',$_product->getAttributeText('manufacturer'));
$product->addChild('description',html_entity_decode($_product->getDescription()));
$product->addChild('short_description',html_entity_decode($_product->getShortDescription()));
$product->addChild('promotion_details');
$product->addChild('deeplink',$_product->getProductUrl());
$product->addChild('delivery_period');
$product->addChild('delivery_cost','6.99');
$product->addChild('stock_level');
$product->addChild('stock_level_date');
$product->addChild('embargo');
$product->addChild('expiry');
$product->addChild('currency');
$product->addChild('display_price',$_product->getFinalPrice());
$product->addChild('price',$_product->getFinalPrice());
$product->addChild('image_thumbnail',$_product->getThumbnailUrl());
$product->addChild('image_url',$_product->getImageUrl());
$product->addChild('image_large_url',$_product->getImageUrl());
$product->addChild('language');
$cats = $_product->getCategoryIds();
$categories = $product->addChild('categories');
foreach($cats as $category_id)
{
$_cat = Mage::getModel('catalog/category')->load($category_id) ;
$category = $categories->addChild('category');
$category->addChild('category_id', $category_id);
$category->addChild('category_name',$_cat->getName());
}
}